<!doctype html>
<html class="default no-js">
<head>
	<meta charset="utf-8">
	<meta http-equiv="X-UA-Compatible" content="IE=edge">
	<title>&quot;transcription/transcription_utils&quot; | @magenta/music</title>
	<meta name="description" content="">
	<meta name="viewport" content="width=device-width, initial-scale=1">
	<link rel="stylesheet" href="../assets/css/main.css">
</head>
<body>
<header>
	<div class="tsd-page-toolbar">
		<div class="container">
			<div class="table-wrap">
				<div class="table-cell" id="tsd-search" data-index="../assets/js/search.js" data-base="..">
					<div class="field">
						<label for="tsd-search-field" class="tsd-widget search no-caption">Search</label>
						<input id="tsd-search-field" type="text" />
					</div>
					<ul class="results">
						<li class="state loading">Preparing search index...</li>
						<li class="state failure">The search index is not available</li>
					</ul>
					<a href="../index.html" class="title">@magenta/music</a>
				</div>
				<div class="table-cell" id="tsd-widgets">
					<div id="tsd-filter">
						<a href="#" class="tsd-widget options no-caption" data-toggle="options">Options</a>
						<div class="tsd-filter-group">
							<div class="tsd-select" id="tsd-filter-visibility">
								<span class="tsd-select-label">All</span>
								<ul class="tsd-select-list">
									<li data-value="public">Public</li>
									<li data-value="protected">Public/Protected</li>
									<li data-value="private" class="selected">All</li>
								</ul>
							</div>
							<input type="checkbox" id="tsd-filter-inherited" checked />
							<label class="tsd-widget" for="tsd-filter-inherited">Inherited</label>
							<input type="checkbox" id="tsd-filter-only-exported" />
							<label class="tsd-widget" for="tsd-filter-only-exported">Only exported</label>
						</div>
					</div>
					<a href="#" class="tsd-widget menu no-caption" data-toggle="menu">Menu</a>
				</div>
			</div>
		</div>
	</div>
	<div class="tsd-page-title">
		<div class="container">
			<ul class="tsd-breadcrumb">
				<li>
					<a href="../globals.html">Globals</a>
				</li>
				<li>
					<a href="_transcription_transcription_utils_.html">&quot;transcription/transcription_utils&quot;</a>
				</li>
			</ul>
			<h1>External module &quot;transcription/transcription_utils&quot;</h1>
		</div>
	</div>
</header>
<div class="container container-main">
	<div class="row">
		<div class="col-8 col-content">
			<section class="tsd-panel tsd-comment">
				<div class="tsd-comment tsd-typography">
					<div class="lead">
						<p>Utility functions for <a href="https://g.co/magenta/onsets-frames" class="external">Onsets and Frames</a> models.</p>
					</div>
					<dl class="tsd-comment-tags">
						<dt>license</dt>
						<dd><p>Copyright 2018 Google Inc. All Rights Reserved.
								Licensed under the Apache License, Version 2.0 (the &quot;License&quot;);
								you may not use this file except in compliance with the License.
							You may obtain a copy of the License at</p>
							<p><a href="http://www.apache.org/licenses/LICENSE-2.0">http://www.apache.org/licenses/LICENSE-2.0</a></p>
							<p>Unless required by applicable law or agreed to in writing, software
								distributed under the License is distributed on an &quot;AS IS&quot; BASIS,
								WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
								See the License for the specific language governing permissions and
							limitations under the License.</p>
						</dd>
					</dl>
				</div>
			</section>
			<section class="tsd-panel-group tsd-index-group">
				<h2>Index</h2>
				<section class="tsd-panel tsd-index-panel">
					<div class="tsd-index-content">
						<section class="tsd-index-section tsd-is-not-exported">
							<h3>Variables</h3>
							<ul class="tsd-index-list">
								<li class="tsd-kind-variable tsd-parent-kind-external-module tsd-is-not-exported"><a href="_transcription_transcription_utils_.html#rf_pad" class="tsd-kind-icon">RF_<wbr>PAD</a></li>
							</ul>
						</section>
						<section class="tsd-index-section ">
							<h3>Functions</h3>
							<ul class="tsd-index-list">
								<li class="tsd-kind-function tsd-parent-kind-external-module"><a href="_transcription_transcription_utils_.html#batchinput" class="tsd-kind-icon">batch<wbr>Input</a></li>
								<li class="tsd-kind-function tsd-parent-kind-external-module"><a href="_transcription_transcription_utils_.html#pianorolltonotesequence" class="tsd-kind-icon">pianoroll<wbr>ToNote<wbr>Sequence</a></li>
								<li class="tsd-kind-function tsd-parent-kind-external-module"><a href="_transcription_transcription_utils_.html#unbatchoutput" class="tsd-kind-icon">unbatch<wbr>Output</a></li>
							</ul>
						</section>
					</div>
				</section>
			</section>
			<section class="tsd-panel-group tsd-member-group tsd-is-not-exported">
				<h2>Variables</h2>
				<section class="tsd-panel tsd-member tsd-kind-variable tsd-parent-kind-external-module tsd-is-not-exported">
					<a name="rf_pad" class="tsd-anchor"></a>
					<h3><span class="tsd-flag ts-flagConst">Const</span> RF_<wbr>PAD</h3>
					<div class="tsd-signature tsd-kind-icon">RF_<wbr>PAD<span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">3</span><span class="tsd-signature-symbol"> =&nbsp;3</span></div>
					<aside class="tsd-sources">
						<ul>
							<li>Defined in <a href="https://github.com/tensorflow/magenta-js/tree/master/music/src/transcription/transcription_utils.ts#L32">transcription/transcription_utils.ts:32</a></li>
						</ul>
					</aside>
				</section>
			</section>
			<section class="tsd-panel-group tsd-member-group ">
				<h2>Functions</h2>
				<section class="tsd-panel tsd-member tsd-kind-function tsd-parent-kind-external-module">
					<a name="batchinput" class="tsd-anchor"></a>
					<h3>batch<wbr>Input</h3>
					<ul class="tsd-signatures tsd-kind-function tsd-parent-kind-external-module">
						<li class="tsd-signature tsd-kind-icon">batch<wbr>Input<span class="tsd-signature-symbol">(</span>input<span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">number</span><span class="tsd-signature-symbol">[]</span><span class="tsd-signature-symbol">[]</span>, batchLength<span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">number</span><span class="tsd-signature-symbol">)</span><span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">Tensor</span><span class="tsd-signature-symbol">&lt;</span><span class="tsd-signature-type">R3</span><span class="tsd-signature-symbol">&gt;</span></li>
					</ul>
					<ul class="tsd-descriptions">
						<li class="tsd-description">
							<aside class="tsd-sources">
								<ul>
									<li>Defined in <a href="https://github.com/tensorflow/magenta-js/tree/master/music/src/transcription/transcription_utils.ts#L60">transcription/transcription_utils.ts:60</a></li>
								</ul>
							</aside>
							<div class="tsd-comment tsd-typography">
								<div class="lead">
									<p>Batches the input, adding padding for the receptive field.</p>
								</div>
								<p>For batches in the middle (not the first or last), we pad the beginning and
									end with values from the previous and following batches to cover the
								receptive field.</p>
								<p>We can&#39;t just use zero padding for the first and last batch since bias will
									be added to it, making it non-zero after the first convolution. This does
									not match how <code>same</code> padding works, which is reset to 0 at each layer.
									Instead we treat the first and last batch differently. The first batch has no
									initial padding and we include extra padding from the second batch on the end
									to make its length match. The final batch has no end padding and we include
									extra padding from the previous batch to the beginning to make its length
								match.</p>
								<p>In most cases, the number of batches will equal <code>ceil(input.shape[0] /
batchLength)</code>. However, in rare cases where the final batch would be shorter
									than the receptive field, it is instead appended to the previous batch,
								reducing the final batch size by 1.</p>
							</div>
							<h4 class="tsd-parameters-title">Parameters</h4>
							<ul class="tsd-parameters">
								<li>
									<h5>input: <span class="tsd-signature-type">number</span><span class="tsd-signature-symbol">[]</span><span class="tsd-signature-symbol">[]</span></h5>
									<div class="tsd-comment tsd-typography">
										<p>The 2D input matrix, shaped [N, D].</p>
									</div>
								</li>
								<li>
									<h5>batchLength: <span class="tsd-signature-type">number</span></h5>
									<div class="tsd-comment tsd-typography">
										<p>The desired batch size (excluding receptive field
										padding). The final batch may be less or slightly more than this.</p>
									</div>
								</li>
							</ul>
							<h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">Tensor</span><span class="tsd-signature-symbol">&lt;</span><span class="tsd-signature-type">R3</span><span class="tsd-signature-symbol">&gt;</span></h4>
							<p>The 3D batched input, shaped [B, batchLength + RF_PAD * 2, D]</p>
						</li>
					</ul>
				</section>
				<section class="tsd-panel tsd-member tsd-kind-function tsd-parent-kind-external-module">
					<a name="pianorolltonotesequence" class="tsd-anchor"></a>
					<h3>pianoroll<wbr>ToNote<wbr>Sequence</h3>
					<ul class="tsd-signatures tsd-kind-function tsd-parent-kind-external-module">
						<li class="tsd-signature tsd-kind-icon">pianoroll<wbr>ToNote<wbr>Sequence<span class="tsd-signature-symbol">(</span>frameProbs<span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">tf.Tensor2D</span>, onsetProbs<span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">tf.Tensor2D</span>, velocityValues<span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">tf.Tensor2D</span>, onsetThreshold<span class="tsd-signature-symbol">?: </span><span class="tsd-signature-type">number</span>, frameThreshold<span class="tsd-signature-symbol">?: </span><span class="tsd-signature-type">number</span><span class="tsd-signature-symbol">)</span><span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">Promise</span><span class="tsd-signature-symbol">&lt;</span><span class="tsd-signature-type">NoteSequence</span><span class="tsd-signature-symbol">&gt;</span></li>
					</ul>
					<ul class="tsd-descriptions">
						<li class="tsd-description">
							<aside class="tsd-sources">
								<ul>
									<li>Defined in <a href="https://github.com/tensorflow/magenta-js/tree/master/music/src/transcription/transcription_utils.ts#L158">transcription/transcription_utils.ts:158</a></li>
								</ul>
							</aside>
							<div class="tsd-comment tsd-typography">
								<div class="lead">
									<p>Converts the model predictions to a NoteSequence.</p>
								</div>
							</div>
							<h4 class="tsd-parameters-title">Parameters</h4>
							<ul class="tsd-parameters">
								<li>
									<h5>frameProbs: <span class="tsd-signature-type">tf.Tensor2D</span></h5>
									<div class="tsd-comment tsd-typography">
										<p>Probabilities of an active frame, shaped <code>[frame,
pitch]</code>.</p>
									</div>
								</li>
								<li>
									<h5>onsetProbs: <span class="tsd-signature-type">tf.Tensor2D</span></h5>
									<div class="tsd-comment tsd-typography">
										<p>Probabilities of an onset, shaped <code>[frame, pitch]</code>.</p>
									</div>
								</li>
								<li>
									<h5>velocityValues: <span class="tsd-signature-type">tf.Tensor2D</span></h5>
									<div class="tsd-comment tsd-typography">
										<p>Predicted velocities in the range [0, 127], shaped
										<code>[frame, pitch]</code>.</p>
									</div>
								</li>
								<li>
									<h5><span class="tsd-flag ts-flagDefault value">Default value</span> onsetThreshold: <span class="tsd-signature-type">number</span><span class="tsd-signature-symbol"> =&nbsp;0.5</span></h5>
								</li>
								<li>
									<h5><span class="tsd-flag ts-flagDefault value">Default value</span> frameThreshold: <span class="tsd-signature-type">number</span><span class="tsd-signature-symbol"> =&nbsp;0.5</span></h5>
								</li>
							</ul>
							<h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">Promise</span><span class="tsd-signature-symbol">&lt;</span><span class="tsd-signature-type">NoteSequence</span><span class="tsd-signature-symbol">&gt;</span></h4>
							<p>A <code>NoteSequence</code> containing the transcribed piano performance.</p>
						</li>
					</ul>
				</section>
				<section class="tsd-panel tsd-member tsd-kind-function tsd-parent-kind-external-module">
					<a name="unbatchoutput" class="tsd-anchor"></a>
					<h3>unbatch<wbr>Output</h3>
					<ul class="tsd-signatures tsd-kind-function tsd-parent-kind-external-module">
						<li class="tsd-signature tsd-kind-icon">unbatch<wbr>Output<span class="tsd-signature-symbol">(</span>batches<span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">tf.Tensor3D</span>, batchLength<span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">number</span>, totalLength<span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">number</span><span class="tsd-signature-symbol">)</span><span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">Tensor</span><span class="tsd-signature-symbol">&lt;</span><span class="tsd-signature-type">R3</span><span class="tsd-signature-symbol">&gt;</span></li>
					</ul>
					<ul class="tsd-descriptions">
						<li class="tsd-description">
							<aside class="tsd-sources">
								<ul>
									<li>Defined in <a href="https://github.com/tensorflow/magenta-js/tree/master/music/src/transcription/transcription_utils.ts#L120">transcription/transcription_utils.ts:120</a></li>
								</ul>
							</aside>
							<div class="tsd-comment tsd-typography">
								<div class="lead">
									<p>Unbatches the input, reversing the procedure of <code>batchInput</code>.</p>
								</div>
							</div>
							<h4 class="tsd-parameters-title">Parameters</h4>
							<ul class="tsd-parameters">
								<li>
									<h5>batches: <span class="tsd-signature-type">tf.Tensor3D</span></h5>
									<div class="tsd-comment tsd-typography">
										<p>The batched input matrix.</p>
									</div>
								</li>
								<li>
									<h5>batchLength: <span class="tsd-signature-type">number</span></h5>
									<div class="tsd-comment tsd-typography">
										<p>The desired batch size (excluding receptive field
										padding). The final batch may be less or slightly more than this.</p>
									</div>
								</li>
								<li>
									<h5>totalLength: <span class="tsd-signature-type">number</span></h5>
								</li>
							</ul>
							<h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">Tensor</span><span class="tsd-signature-symbol">&lt;</span><span class="tsd-signature-type">R3</span><span class="tsd-signature-symbol">&gt;</span></h4>
							<p>The batched input, shaped [N, batchLength + RF_PAD * 2]</p>
						</li>
					</ul>
				</section>
			</section>
		</div>
		<div class="col-4 col-menu menu-sticky-wrap menu-highlight">
			<nav class="tsd-navigation primary">
				<ul>
					<li class="globals  ">
						<a href="../globals.html"><em>Globals</em></a>
					</li>
					<li class="current tsd-kind-external-module">
						<a href="_transcription_transcription_utils_.html">"transcription/transcription_<wbr>utils"</a>
					</li>
				</ul>
			</nav>
			<nav class="tsd-navigation secondary menu-sticky">
				<ul class="before-current">
					<li class=" tsd-kind-variable tsd-parent-kind-external-module tsd-is-not-exported">
						<a href="_transcription_transcription_utils_.html#rf_pad" class="tsd-kind-icon">RF_<wbr>PAD</a>
					</li>
					<li class=" tsd-kind-function tsd-parent-kind-external-module">
						<a href="_transcription_transcription_utils_.html#batchinput" class="tsd-kind-icon">batch<wbr>Input</a>
					</li>
					<li class=" tsd-kind-function tsd-parent-kind-external-module">
						<a href="_transcription_transcription_utils_.html#pianorolltonotesequence" class="tsd-kind-icon">pianoroll<wbr>ToNote<wbr>Sequence</a>
					</li>
					<li class=" tsd-kind-function tsd-parent-kind-external-module">
						<a href="_transcription_transcription_utils_.html#unbatchoutput" class="tsd-kind-icon">unbatch<wbr>Output</a>
					</li>
				</ul>
			</nav>
		</div>
	</div>
</div>
<footer class="with-border-bottom">
	<div class="container">
		<h2>Legend</h2>
		<div class="tsd-legend-group">
			<ul class="tsd-legend">
				<li class="tsd-kind-module"><span class="tsd-kind-icon">Module</span></li>
				<li class="tsd-kind-object-literal"><span class="tsd-kind-icon">Object literal</span></li>
				<li class="tsd-kind-variable"><span class="tsd-kind-icon">Variable</span></li>
				<li class="tsd-kind-function"><span class="tsd-kind-icon">Function</span></li>
				<li class="tsd-kind-function tsd-has-type-parameter"><span class="tsd-kind-icon">Function with type parameter</span></li>
				<li class="tsd-kind-index-signature"><span class="tsd-kind-icon">Index signature</span></li>
				<li class="tsd-kind-type-alias"><span class="tsd-kind-icon">Type alias</span></li>
			</ul>
			<ul class="tsd-legend">
				<li class="tsd-kind-enum"><span class="tsd-kind-icon">Enumeration</span></li>
				<li class="tsd-kind-enum-member"><span class="tsd-kind-icon">Enumeration member</span></li>
				<li class="tsd-kind-property tsd-parent-kind-enum"><span class="tsd-kind-icon">Property</span></li>
				<li class="tsd-kind-method tsd-parent-kind-enum"><span class="tsd-kind-icon">Method</span></li>
			</ul>
			<ul class="tsd-legend">
				<li class="tsd-kind-interface"><span class="tsd-kind-icon">Interface</span></li>
				<li class="tsd-kind-interface tsd-has-type-parameter"><span class="tsd-kind-icon">Interface with type parameter</span></li>
				<li class="tsd-kind-constructor tsd-parent-kind-interface"><span class="tsd-kind-icon">Constructor</span></li>
				<li class="tsd-kind-property tsd-parent-kind-interface"><span class="tsd-kind-icon">Property</span></li>
				<li class="tsd-kind-method tsd-parent-kind-interface"><span class="tsd-kind-icon">Method</span></li>
				<li class="tsd-kind-index-signature tsd-parent-kind-interface"><span class="tsd-kind-icon">Index signature</span></li>
			</ul>
			<ul class="tsd-legend">
				<li class="tsd-kind-class"><span class="tsd-kind-icon">Class</span></li>
				<li class="tsd-kind-class tsd-has-type-parameter"><span class="tsd-kind-icon">Class with type parameter</span></li>
				<li class="tsd-kind-constructor tsd-parent-kind-class"><span class="tsd-kind-icon">Constructor</span></li>
				<li class="tsd-kind-property tsd-parent-kind-class"><span class="tsd-kind-icon">Property</span></li>
				<li class="tsd-kind-method tsd-parent-kind-class"><span class="tsd-kind-icon">Method</span></li>
				<li class="tsd-kind-accessor tsd-parent-kind-class"><span class="tsd-kind-icon">Accessor</span></li>
				<li class="tsd-kind-index-signature tsd-parent-kind-class"><span class="tsd-kind-icon">Index signature</span></li>
			</ul>
			<ul class="tsd-legend">
				<li class="tsd-kind-constructor tsd-parent-kind-class tsd-is-inherited"><span class="tsd-kind-icon">Inherited constructor</span></li>
				<li class="tsd-kind-property tsd-parent-kind-class tsd-is-inherited"><span class="tsd-kind-icon">Inherited property</span></li>
				<li class="tsd-kind-method tsd-parent-kind-class tsd-is-inherited"><span class="tsd-kind-icon">Inherited method</span></li>
				<li class="tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited"><span class="tsd-kind-icon">Inherited accessor</span></li>
			</ul>
			<ul class="tsd-legend">
				<li class="tsd-kind-property tsd-parent-kind-class tsd-is-protected"><span class="tsd-kind-icon">Protected property</span></li>
				<li class="tsd-kind-method tsd-parent-kind-class tsd-is-protected"><span class="tsd-kind-icon">Protected method</span></li>
				<li class="tsd-kind-accessor tsd-parent-kind-class tsd-is-protected"><span class="tsd-kind-icon">Protected accessor</span></li>
			</ul>
			<ul class="tsd-legend">
				<li class="tsd-kind-property tsd-parent-kind-class tsd-is-private"><span class="tsd-kind-icon">Private property</span></li>
				<li class="tsd-kind-method tsd-parent-kind-class tsd-is-private"><span class="tsd-kind-icon">Private method</span></li>
				<li class="tsd-kind-accessor tsd-parent-kind-class tsd-is-private"><span class="tsd-kind-icon">Private accessor</span></li>
			</ul>
			<ul class="tsd-legend">
				<li class="tsd-kind-property tsd-parent-kind-class tsd-is-static"><span class="tsd-kind-icon">Static property</span></li>
				<li class="tsd-kind-call-signature tsd-parent-kind-class tsd-is-static"><span class="tsd-kind-icon">Static method</span></li>
			</ul>
		</div>
	</div>
</footer>
<div class="container tsd-generator">
	<p>Generated using <a href="http://typedoc.org/" target="_blank">TypeDoc</a></p>
</div>
<div class="overlay"></div>
<script src="../assets/js/main.js"></script>
<script>if (location.protocol == 'file:') document.write('<script src="../assets/js/search.js"><' + '/script>');</script>
</body>
</html>